package pe.gob.mtpe.renoccsys.managedBeans;

import java.io.IOException;
import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;


import pe.gob.mtpe.renoccsys.bean.Usuario;
import pe.gob.mtpe.renoccsys.mybatis.despachadores.RenoccDespatch;
import pe.gob.mtpe.renoccsys.utils.FacesUtils;
import pe.gob.sunat.tecnologia.menu.bean.UsuarioBean;




@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private Usuario PGP_Usuario;
	private boolean penienteActualizacion;
	private String     estadoLog;
	public LoginBean(){
		inicializar();
	}
	
	private void inicializar(){
		PGP_Usuario=new Usuario();
	}
	
	
	public String login() throws Exception{
		System.out.println("login=> Si llega LoginBean");
		String vista="";
		try{
			
			
			
			//PARA MI MAQUINA LOCAL
			/*
	    	String ruc = "20307488249";
	    	String usuarioSol = "LCBXFK2Z";
	    	*/
			
			//PRODUCCION (COMENTAR PARA LOCAL) ********************
	    	
			
			UsuarioBean usuarioBean = (UsuarioBean)FacesUtils.getSessionAttribute("usuarioBean");
			
			if(usuarioBean==null){
				FacesUtils.removeUsuarioLogueado();
				FacesUtils.removeSessionAttribute("encuestaBean");
				FacesUtils.removeSessionAttribute("loginBean");
				FacesUtils.removeSessionAttribute("usuarioBean");
				System.out.println("login=> entro  a usuarioBean==null");
				vista="pretty:login";
				return vista;
			}
			
			
	    	 
			System.out.println("login=> usuarioBean.getNumRUC()=>"+usuarioBean.getNumRUC());
			if(usuarioBean.getNumRUC()==null || usuarioBean.getNumRUC().equals("")){
				System.out.println("Borrando sessiones");
				FacesUtils.removeUsuarioLogueado();
				//FacesUtils.removeSessionAttribute("encuestaBean");
				FacesUtils.removeSessionAttribute("loginBean");
				FacesUtils.removeSessionAttribute("usuarioBean");
				FacesContext.getCurrentInstance().getExternalContext().redirect("https://appweb.trabajo.gob.pe/si.renocc/index.jsp");
				return "";
			}
			
			String ruc          = usuarioBean.getNumRUC();
	        String usuarioSol   = usuarioBean.getUsuarioSOL();
	        
	       
			//FIN PRODUCCION ********************************
			
	    	RenoccDespatch renoccdp = new RenoccDespatch();
	    	
	    	 Usuario useremp = renoccdp.obtDatos( ruc );
			
	    	 renoccdp.actualizarPendienteActualizacion(useremp);
	    	 Integer validaPendienteActualizacion=renoccdp.verificaPendienteActualizacion(useremp);
	    	 if(validaPendienteActualizacion>0){
	    		 penienteActualizacion=true; 
	    	 }
	    	 useremp.setV_hostreg(FacesUtils.getIpAddress());
	    	 useremp.setV_usuario(usuarioSol);
	    	 
	    	 PGP_Usuario=useremp;
	    	 
					//muestraEnc.valuestoString();		
					//FacesUtils.setSessionAttribute("muestraLog",muestraEnc);
					//FacesUtils.setSessionAttribute("periodo",periodo);
					vista="pretty:principal";
				//}
				
			//}
		
		}catch(Exception e){
			e.printStackTrace();
		}
		
		System.out.println(vista);
		return vista;
	}

	
	public void salir(){
		
		System.out.println("Salir=> Entro a SALIR");
		FacesUtils.removeUsuarioLogueado();
		//FacesUtils.removeSessionAttribute("encuestaBean");
		FacesUtils.removeSessionAttribute("loginBean");
		FacesUtils.removeSessionAttribute("usuarioBean");
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ExternalContext ec = facesContext.getExternalContext();
		HttpSession httpSession = (HttpSession)facesContext.getExternalContext().getSession(false);
		httpSession.invalidate();
		//vista="pretty:login";			
		try {
			//DECOMENTAR EN PRODUCCION
			FacesContext.getCurrentInstance().getExternalContext().redirect("https://appweb.trabajo.gob.pe/si.renocc/index.jsp");
			//COMENTAR EN PRODUCCION
			//FacesContext.getCurrentInstance().getExternalContext().redirect(ec.getRequestContextPath());
		} catch (IOException e) {				
			e.printStackTrace();
		}
	
	}
	
	/**=====================================================get set=================================================================================*/


	public String getEstadoLog() {
		return estadoLog;
	}

	public void setEstadoLog(String estadoLog) {
		this.estadoLog = estadoLog;
	}

	public Usuario getPGP_Usuario() {
		return PGP_Usuario;
	}

	public void setPGP_Usuario(Usuario pGP_Usuario) {
		PGP_Usuario = pGP_Usuario;
	}

	public boolean isPenienteActualizacion() {
		return penienteActualizacion;
	}

	public void setPenienteActualizacion(boolean penienteActualizacion) {
		this.penienteActualizacion = penienteActualizacion;
	}
		

}
